Finalize w3id IRI scheme: collapse version-IRI doubling (#436), declare w3id canonical (#435)#462
Conversation
…#435) #436: the generated src/ontology/Makefile still had the pre-#458 URIBASE (https://w3id.org/metpo) and a hardcoded doubled ONTBASE (https://w3id.org/metpo/metpo), so version and product IRIs came out as https://w3id.org/metpo/metpo/releases/... even though metpo-odk.yaml already set uribase: https://w3id.org. Aligned the generated Makefile to odk.yaml (URIBASE=https://w3id.org, ONTBASE=https://w3id.org/metpo) and rebuilt. Version IRIs are now single-metpo (https://w3id.org/metpo/releases/2026-06-02/metpo.owl), products at https://w3id.org/metpo/metpo-{base,full}.owl, main ontology IRI https://w3id.org/metpo.owl. Zero metpo/metpo/ doubling remains. #435: documented https://w3id.org/metpo/ as the only canonical resolution base in the README and explicitly steered users away from http://purl.obolibrary.org/obo/METPO_<id> PURLs, which 404 because METPO is not registered in the OBO Foundry. (Adopts option 2 from #435; option 1, OBO registration, is out of scope.) Rebuilds all release artifacts. Term IRIs unchanged (https://w3id.org/metpo/<id>). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR finalizes the METPO IRI scheme to consistently use w3id.org, removing the previous .../metpo/metpo/... path doubling in version IRIs and documenting w3id.org as the canonical resolution approach (vs. non-working OBO Library PURLs).
Changes:
- Update ODK-generated
src/ontology/MakefileURIBASE/ONTBASEso ontology IRIs and version IRIs are built under the intendedw3id.orglayout. - Regenerate release artefacts (
metpo.owl/metpo-full.*/metpo-base.*/ JSON/OBO) so ontology + version IRIs match the updated scheme. - Add README guidance on canonical term IRIs under
https://w3id.org/metpo/and warn againstpurl.obolibrary.orgPURLs.
Reviewed changes
Copilot reviewed 12 out of 12 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/ontology/Makefile | Switches URIBASE/ONTBASE to align generated IRIs with w3id.org scheme (impacts release IRI construction). |
| src/ontology/components/metpo_sheet.owl | Updates component ontology IRI/versionIRI to remove metpo/metpo doubling. |
| README.md | Documents canonical METPO term IRIs and discourages obolibrary PURLs. |
| metpo.owl | Updates ontology IRI + versionIRI to new w3id.org layout (no doubled path). |
| metpo.obo | Updates ontology: and data-version: IRIs to match updated release IRIs. |
| metpo.json | Updates graph id and version IRIs to match updated release IRIs. |
| metpo-full.owl | Updates ontology IRI + versionIRI to remove metpo/metpo doubling. |
| metpo-full.obo | Updates ontology: and data-version: IRIs to match updated release IRIs. |
| metpo-full.json | Updates graph id and version IRIs to match updated release IRIs. |
| metpo-base.owl | Updates ontology IRI + versionIRI to remove metpo/metpo doubling. |
| metpo-base.obo | Updates ontology: and data-version: IRIs to match updated release IRIs. |
| metpo-base.json | Updates graph id and version IRIs to match updated release IRIs. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| - The ontology prefix `METPO:` expands to `https://w3id.org/metpo/` | ||
| - Ontology document IRI: `https://w3id.org/metpo.owl` (release products and version IRIs live under `https://w3id.org/metpo/`, e.g. `https://w3id.org/metpo/releases/<date>/metpo.owl`) | ||
|
|
||
| **Do not use `http://purl.obolibrary.org/obo/METPO_<id>`.** METPO is not registered in the OBO Foundry, so those PURLs do not resolve (HTTP 404) and are not METPO identifiers. `https://w3id.org/` is the only canonical resolution base for METPO. (Term-IRI resolution behavior is still being finalized; see issues #450 and #435.) |
There was a problem hiding this comment.
Addressed in #464 (and refined in #469): the README now distinguishes the resolver host (w3id.org) from the canonical identifier namespace (https://w3id.org/metpo/).
| OBOBASE= http://purl.obolibrary.org/obo | ||
| URIBASE= https://w3id.org/metpo | ||
| URIBASE= https://w3id.org | ||
| ONT= metpo | ||
| ONTBASE= https://w3id.org/metpo/metpo | ||
| ONTBASE= https://w3id.org/metpo |
| <owl:Ontology rdf:about="https://w3id.org/metpo/metpo-base.owl"> | ||
| <owl:versionIRI rdf:resource="https://w3id.org/metpo/releases/2026-06-02/metpo-base.owl"/> | ||
| <dce:type rdf:resource="http://purl.obolibrary.org/obo/IAO_8000001"/> | ||
| <dcterms:contributor rdf:resource="https://orcid.org/0000-0001-9076-6066"/> | ||
| <dcterms:creator>METPO Development Team</dcterms:creator> |
There was a problem hiding this comment.
Confirmed and fixed in #464: metpo-base.owl now carries all 1454 METPO classes (the base-IRI filter no longer strips them).
| format-version: 1.2 | ||
| data-version: https://w3id.org/metpo/metpo/releases/2026-06-02/metpo-base.owl | ||
| data-version: https://w3id.org/metpo/releases/2026-06-02/metpo-base.owl | ||
| idspace: dce http://purl.org/dc/elements/1.1/ | ||
| idspace: dcterms http://purl.org/dc/terms/ | ||
| ontology: https://w3id.org/metpo/metpo/metpo-base.owl | ||
| ontology: https://w3id.org/metpo/metpo-base.owl |
There was a problem hiding this comment.
Fixed in #464: metpo-base.obo now contains the METPO [Term] frames after the base-IRI filter fix + rebuild.
| { | ||
| "graphs" : [ { | ||
| "id" : "https://w3id.org/metpo/metpo/metpo-base.json", | ||
| "id" : "https://w3id.org/metpo/metpo-base.json", | ||
| "meta" : { | ||
| "basicPropertyValues" : [ { |
There was a problem hiding this comment.
Fixed in #464: metpo-base.json now contains the METPO class/property nodes after the base-IRI fix + rebuild.
…#463) (#464) The -base release products shipped with zero METPO terms (verified empty in the 2026-05-19 release and pre-#462 main; full artifacts unaffected). Root cause: the base pipeline used `remove --base-iri $(URIBASE)/METPO --axioms external`, but METPO term IRIs are https://w3id.org/metpo/<id> (lowercase, slash), so the filter never matched and every METPO axiom was stripped. The QC report rules already use the correct $(URIBASE)/metpo. Changed line 542 to match; metpo-base.* now carries all 1454 METPO classes (imported externals still excluded). Also reworded the README IRI paragraph (Copilot review on #462) to distinguish the resolver host (w3id.org) from the canonical identifier namespace (https://w3id.org/metpo/). Pre-existing defect, not introduced by #462. Fixes #463. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Finishes the IRI-scheme work from #458 so the BioPortal release is clean.
#436 (version-IRI doubling).
metpo-odk.yamlalready seturibase: https://w3id.org, but the committed generatedsrc/ontology/Makefilewas never refreshed and still carriedURIBASE=https://w3id.org/metpoplus a hardcodedONTBASE=https://w3id.org/metpo/metpo. That produced…/metpo/metpo/releases/…version IRIs. Aligned the Makefile to the odk.yaml value and rebuilt. Now: version IRIhttps://w3id.org/metpo/releases/2026-06-02/metpo.owl, productshttps://w3id.org/metpo/metpo-{base,full}.owl, main ontology IRIhttps://w3id.org/metpo.owl(standard registry-root layout). Nometpo/metpo/left.#435 (obolibrary PURL 404). Adopts option 2: README now declares
https://w3id.org/metpo/the only canonical resolution base and explicitly tells users not to usepurl.obolibrary.org/obo/METPO_<id>(those 404 because METPO isn't OBO-registered). OBO registration (option 1) is out of scope.Why a direct Makefile edit rather than
make update_repo:URIBASE/ONTBASEare the documented "can be overwritten" config values, odk.yaml is already correct, and this keeps the PR a reviewable 2-line config change plus the rebuild instead of a full ODK scaffold regeneration. A futureupdate_reporegenerates the same values.Does not touch #437 (a BioPortal submission-form setting) or #450 (external
w3id.org.htaccess). Term IRIs unchanged.